// 添加过期时间检查函数
function isDataExpired(timestamp) {
    if (!timestamp) return true;
    const now = new Date().getTime();
    return now > timestamp;
}

// 添加带过期时间的存储函数
function setItemWithExpiry(key, value, expiryInMinutes) {
    const item = {
        value: value,
        timestamp: new Date().getTime() + (expiryInMinutes * 60 * 1000)
    };
    localStorage.setItem(key, JSON.stringify(item));
}

// 添加带过期时间的获取函数
function getItemWithExpiry(key) {
    const itemStr = localStorage.getItem(key);
    if (!itemStr) return null;
    
    const item = JSON.parse(itemStr);
    if (isDataExpired(item.timestamp)) {
        localStorage.removeItem(key);
        return null;
    }
    return item.value;
}

document.addEventListener('DOMContentLoaded', function() {
    const loginForm = document.getElementById('login-form');
    const usernameInput = document.getElementById('username');
    const passwordInput = document.getElementById('password');

    // 如果不在登录页面，直接返回
    if (!loginForm || !usernameInput || !passwordInput) {
        return;
    }

    // 检查是否有保存的用户名
    const savedUsername = getItemWithExpiry('username');
    if (savedUsername) {
        usernameInput.value = savedUsername;
    }

    loginForm.addEventListener('submit', async function(e) {
        e.preventDefault();
        
        const username = usernameInput.value;
        const password = passwordInput.value;
        const remember = document.querySelector('input[name="remember"]').checked;

        if (username && password) {
            try {
                console.log('开始发送登录请求...');
                // 发送登录请求到后端
                const response = await fetch('http://localhost:8080/login', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'Accept': 'application/json'
                    },
                    body: JSON.stringify({
                        username: username,
                        password: password
                    })
                }).catch(error => {
                    console.error('网络请求错误:', error);
                    throw new Error('网络请求失败，请检查服务器是否启动');
                });

                console.log('收到服务器响应:', response);
                console.log('响应状态码:', response.status);
                console.log('响应头:', Object.fromEntries(response.headers.entries()));

                // 检查响应类型
                const contentType = response.headers.get('content-type');
                if (!contentType || !contentType.includes('application/json')) {
                    throw new Error('服务器返回格式错误');
                }

                if (response.status === 403) {
                    showErrorMessage('访问被拒绝，请检查您的权限或联系管理员');
                    return;
                }

                const data = await response.json();
                console.log('响应数据:', data);
                console.log('用户ID:', data.data.id);

                if (response.status === 200) {
                    // 登录成功，设置带过期时间的存储
                    setItemWithExpiry('isLoggedIn', 'true', 30); // 30分钟过期
                    setItemWithExpiry('username', username, 30);
                    setItemWithExpiry('userId', data.data.id, 30); // 存储用户ID，30分钟过期
                    
                    // 初始化用户信息
                    const userInfo = {
                        username: username,
                        avatar: 'images/avatar.jpg',
                        userId: data.data.id
                    };
                    setItemWithExpiry('userInfo', JSON.stringify(userInfo), 7 * 24 * 60); // 7天过期
                    
                    if (remember) {
                        setItemWithExpiry('rememberUsername', 'true', 7 * 24 * 60); // 7天过期
                    } else {
                        localStorage.removeItem('rememberUsername');
                    }

                    showSuccessMessage(`登录成功！用户ID: ${data.data.id}，正在跳转...`);

                    const redirectUrl = getItemWithExpiry('redirectAfterLogin') || 'index.html';
                    localStorage.removeItem('redirectAfterLogin');

                    if (data.data.id === 100) {
                        window.location.href = 'admin.html';
                    } else {
                        setTimeout(() => {
                            window.location.href = redirectUrl;
                        }, 1500);
                    }
                } else {
                    // 登录失败
                    showErrorMessage(data.message || '登录失败，请检查用户名和密码');
                }
            } catch (error) {
                console.error('登录请求出错:', error);
                showErrorMessage('登录请求失败，请稍后重试');
            }
        } else {
            showErrorMessage('请输入用户名和密码');
        }
    });
});

// 显示错误消息d
function showErrorMessage(message) {
    const errorDiv = document.createElement('div');
    errorDiv.className = 'error-message';
    errorDiv.textContent = message;
    
    const form = document.querySelector('.login-form');
    form.insertBefore(errorDiv, form.firstChild);
    
    setTimeout(() => {
        errorDiv.remove();
    }, 3000);
}

// 显示成功消息
function showSuccessMessage(message) {
    const successDiv = document.createElement('div');
    successDiv.className = 'success-message';
    successDiv.textContent = message;
    
    const form = document.querySelector('.login-form');
    form.insertBefore(successDiv, form.firstChild);
    
    setTimeout(() => {
        successDiv.remove();
    }, 3000);
} 